package pe.edu.upc.dsd.jjjar.afiliacion;

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

@WebService(endpointInterface = "pe.edu.upc.dsd.jjjar.afiliacion.AfiliarService")
public class AfiliarServiceImpl implements AfiliarService {

	// private List<Cliente> clientes = new ArrayList<Cliente>();

	@Override
	public OperacionResponse registrar(Cliente cliente) {

		OperacionResponse response = new OperacionResponse();
		boolean existe = false;

		for (Cliente c : BaseDatos.clientes) {
			if (c.getNrocelular().equals(cliente.getNrocelular())) {
				existe = true;
				break;
			}

		}

		if (existe) {
			response.setCorrecto(false);
			response.setMensaje("Cliente ya se encontra afiliado");
		} else {
			BaseDatos.clientes.add(cliente);
			response.setCorrecto(true);
			response.setMensaje("El cliente ha sido afiliado correctamente.");
		}

		return response;
	}

	@Override
	public OperacionResponse desafiliar(String nrocelular) {

		OperacionResponse response = new OperacionResponse();
		boolean existe = false;

		for (Cliente c : BaseDatos.clientes) {
			if (c.getNrocelular().equals(nrocelular)) {
				BaseDatos.clientes.remove(c);
				existe = true;
				break;
			}

		}

		if (existe) {
			response.setCorrecto(true);
			response.setMensaje("Cliente desafiliado con exito");
		} else {
			response.setCorrecto(false);
			response.setMensaje("Nro celular no encontrado");
		}

		return response;
	}

	@Override
	public ListadoResponse listar(List<String> nrocuentas, int idbanco) {

		ListadoResponse respuesta = new ListadoResponse();
		List<Cliente> clientes = new ArrayList<Cliente>();

		boolean existe = false;

		System.out.println(nrocuentas.size());
		System.out.println("Cuentas Consultadas:");
		for (String nrocta : nrocuentas) {
			System.out.println(nrocta);
		}
		System.out.println("ID Banco:" + idbanco);

		for (String cuenta : nrocuentas) {

			for (Cliente c : BaseDatos.clientes) {
				System.out.println("Buscando.... " + c.getNrocelular() + " / " + c.getIdbanco());
				if (c.getNrocuenta().equals(cuenta)
						&& c.getIdbanco() == idbanco) {
					System.out.println("EXISTE");
					clientes.add(c);
					existe = true;

				}

			}

		}

		if (existe) {
			respuesta.setCliente(clientes);
			respuesta.setMensaje("ok");
		} else
			respuesta.setMensaje("Cliente no Existe");
		
		System.out.println(respuesta.getMensaje());
		
		return (respuesta);

	}

}
